home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Info-Mac 4
/
Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso
/
Development
/
Source
/
Fudd source Folder
/
Prepare ƒ
/
MSG Shell ƒ
/
msg shell main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-11-07
|
3KB
|
122 lines
/**********************************************************************\
File: msg shell main.c
Purpose: This module handles the event loop and event dispatching.
MSG Prepare 1.0 -- minimal integrity check preparation program
Copyright (C) 1993 Mark Pilgrim
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program in a file named "GNU General Public License".
If not, write to the Free Software Foundation, 675 Mass Ave,
Cambridge, MA 02139, USA.
\**********************************************************************/
#include "msg main.h"
#include "msg menus.h"
#include "MSG Prepare.h"
EventRecord gTheEvent;
void main(void)
{
gDone = FALSE;
MaxApplZone();
InitGraf(&thePort);
InitFonts();
FlushEvents(everyEvent, 0);
InitWindows();
InitMenus();
TEInit();
InitDialogs(0L);
InitCursor();
GetDateTime(&randSeed);
CheckDropKick();
if (gDone)
ExitToShell();
InitEnvironment();
EventLoop();
ExitToShell();
}
void InitEnvironment(void)
{
Handle MBARHandle;
MBARHandle = GetNewMBar(400);
SetMenuBar(MBARHandle);
gAppleMenu = GetMHandle(appleMenu);
gFileMenu = GetMHandle(fileMenu);
gEditMenu = GetMHandle(editMenu);
AddResMenu(gAppleMenu, 'DRVR');
AdjustMenus();
}
void EventLoop(void)
{
while(!gDone)
{
SetCursor(&arrow);
HiliteMenu(0);
if (WaitNextEvent(everyEvent, &gTheEvent, 30, 0L))
DispatchEvents();
}
}
void DispatchEvents(void)
{
int i;
switch (gTheEvent.what)
{
case nullEvent:
break;
case mouseDown:
HandleMouseDown();
break;
case keyDown:
case autoKey:
if(gTheEvent.modifiers & cmdKey)
{
AdjustMenus();
HandleMenu(MenuKey((char)(gTheEvent.message & charCodeMask)));
}
break;
}
}
void HandleMouseDown(void)
{
WindowPtr theWindow;
int windowCode = FindWindow(gTheEvent.where, &theWindow);
switch (windowCode)
{
case inMenuBar:
AdjustMenus();
HandleMenu(MenuSelect(gTheEvent.where));
break;
case inContent:
if(FrontWindow() != theWindow)
SelectWindow(theWindow);
break;
case inSysWindow:
SystemClick(&gTheEvent, theWindow);
break;
}
}